datum
	chemical_reaction
		explosion_potassium
			name = "Explosion"
			id = "explosion_potassium"
			result = null
			required_reagents = list("water" = 1, "potassium" = 1, "carbon" = 1, "plasma" = 1)
			result_amount = 2
			on_reaction(var/datum/reagents/holder, var/created_volume)
				var/location = get_turf(holder.my_atom)
				var/datum/effect/effect/system/reagents_explosion/e = new()
				e.set_up(round (created_volume/8, 1), location, 0, 0)
				e.start()
				holder.clear_reagents()
				return

		explosion_plasma
			name = "Explosion"
			id = "explosion_plasma"
			result = null
			required_reagents = list("plasma" = 1)
			result_amount = 2
			requires_heating = 1
			on_reaction(var/datum/reagents/holder, var/created_volume)
				var/location = get_turf(holder.my_atom)
				var/datum/effect/effect/system/reagents_explosion/e = new()
				e.set_up(round (created_volume/4, 1), location, 0, 0)
				e.start()
				holder.clear_reagents()
				return

		nitroglycerin
			name = "Nitroglycerin"
			id = "nitroglycerin"
			result = "nitroglycerin"
			required_reagents = list("glycerol" = 1, "pacid" = 1, "sacid" = 1)
			result_amount = 2
			on_reaction(var/datum/reagents/holder, var/created_volume)
				var/location = get_turf(holder.my_atom)
				var/datum/effect/effect/system/reagents_explosion/e = new()
				e.set_up(round (created_volume/2, 1), location, 0, 0)
				e.start()

				holder.clear_reagents()
				return

		emp_pulse
			name = "EMP Pulse"
			id = "emp_pulse"
			result = null
			required_reagents = list("uranium" = 1, "iron" = 1, "copper" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
			result_amount = 2

			on_reaction(var/datum/reagents/holder, var/created_volume)
				var/location = get_turf(holder.my_atom)
				// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
				// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
				empulse(location, round(created_volume / 20), round(created_volume / 10), 1)
				holder.clear_reagents()
				return

		mutagen
			name = "Unstable mutagen"
			id = "mutagen"
			result = "mutagen"
			required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1, "uranium" = 1)
			result_amount = 1

		cryptobiolin
			name = "Cryptobiolin"
			id = "cryptobiolin"
			result = "cryptobiolin"
			required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1, "mercury" = 1)
			result_amount = 2

		flash_powder
			name = "Flash powder"
			id = "flash_powder"
			result = null
			required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 )
			result_amount = null
			on_reaction(var/datum/reagents/holder, var/created_volume)
				var/location = get_turf(holder.my_atom)
				var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
				s.set_up(2, 1, location)
				s.start()
				for(var/mob/living/carbon/M in viewers(world.view, location))
					switch(get_dist(M, location))
						if(0 to 1)
							flick("e_flash", M.flash)
							M.Stun(20)
						if(2 to 3)
							if(hasvar(M, "glasses"))
								if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
									continue

							flick("e_flash", M.flash)
							M.Stun(15)

						if(4 to 5)
							if(hasvar(M, "glasses"))
								if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
									continue

							flick("e_flash", M.flash)
							M.Stun(5)

		chloralhydrate
			name = "Chloral Hydrate"
			id = "chloralhydrate"
			result = "chloralhydrate"
			required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1, "nitrogen" = 2, "mercury" = 1)
			result_amount = 1

		zombiepowder
			name = "Zombie Powder"
			id = "zombiepowder"
			result = "zombiepowder"
			required_reagents = list("carpotoxin" = 5, "stoxin" = 5, "copper" = 5, "mercury" = 1)
			result_amount = 1

		mindbreaker
			name = "Mindbreaker Toxin"
			id = "mindbreaker"
			result = "mindbreaker"
			required_reagents = list("silicon" = 1, "hydrogen" = 1, "anti_toxin" = 1, "mercury" = 7)
			result_amount = 2

		lipozine
			name = "Lipozine"
			id = "Lipozine"
			result = "lipozine"
			required_reagents = list("sodiumchloride" = 1, "ethanol" = 1, "radium" = 1, "nutriment" = 1)
			result_amount = 1

		cyanide
			name = "Cyanide"
			id = "cyanide"
			result = "cyanide"
			required_reagents = list("hydrogen" = 1, "chlorine" = 3, "lipozine" = 1, "nitrogen" = 2, "stoxin" = 1, "lexorin" = 1)
			result_amount = 1
			requires_heating = 1